package com.tyning.leetcode.jz57;

//剑指 Offer 57. 和为s的两个数字
//输入一个递增排序的数组和一个数字s，在数组中查找两个数，使得它们的和正好是s。如果有多对数字的和等于s，则输出任意一对即可。
//
//
//
//示例 1：
//
//输入：nums = [2,7,11,15], target = 9
//输出：[2,7] 或者 [7,2]
//示例 2：
//
//输入：nums = [10,26,30,31,47,60], target = 40
//输出：[10,30] 或者 [30,10]
//
//
//限制：
//
//1 <= nums.length <= 10^5
//1 <= nums[i] <= 10^6
//通过次数100,258提交次数151,808
// https://leetcode-cn.com/problems/he-wei-sde-liang-ge-shu-zi-lcof/


import java.util.Arrays;

public class Solution {

    /**
     * 有序数组 左右指针查找
     *
     * @param nums
     * @param target
     * @return
     */

    public static int[] twoSum(int[] nums, int target) {
        int left = 0, right = nums.length - 1;
        while (left < right) {
            if ((nums[left] + nums[right]) == target) {
                return new int[]{nums[left], nums[right]};
            } else if ((nums[left] + nums[right]) < target) {
                ++left;
            } else {
                --right;
            }
        }
        return null;
    }


    public static void main(String[] args) {
        int[] nums = {45, 46, 67, 73, 74, 74, 77, 83, 89, 98};
        System.out.println(Arrays.toString(twoSum(nums, 147)));
    }
}
